// pop up the loading box whenever an ajax request is sent
// block it by setting block_loading_box to true
var block_loading_box = false;

Ajax.Responders.register({
  onCreate: function(){
    if($('ajax_busy') && Ajax.activeRequestCount > 0 && !block_loading_box){
      center('ajax_busy');
    }
  },
  onComplete: function(){
    if($('ajax_busy') && Ajax.activeRequestCount == 0){
      $('ajax_busy').hide();
    }
  }
});


// for centering an element dead center of the view
function center(element){
  try{
      element = $(element);
  }catch(e){
      return;
  }

  var my_width  = 0;
  var my_height = 0;

  if ( typeof( window.innerWidth ) == 'number' ){
      my_width  = window.innerWidth;
      my_height = window.innerHeight;
  } else if ( document.documentElement &&
           ( document.documentElement.clientWidth ||
             document.documentElement.clientHeight ) ){
      my_width  = document.documentElement.clientWidth;
      my_height = document.documentElement.clientHeight;
  }
  else if ( document.body && 
          ( document.body.clientWidth || document.body.clientHeight ) ){
      my_width  = document.body.clientWidth;
      my_height = document.body.clientHeight;
  }

  element.style.position = 'absolute';
  element.style.zIndex   = 99;

  var scrollY = 0;

  if ( document.documentElement && document.documentElement.scrollTop ){
      scrollY = document.documentElement.scrollTop;
  }else if ( document.body && document.body.scrollTop ){
      scrollY = document.body.scrollTop;
  }else if ( window.pageYOffset ){
      scrollY = window.pageYOffset;
  }else if ( window.scrollY ){
      scrollY = window.scrollY;
  }

  var elementDimensions = Element.getDimensions(element);

  var setX = ( my_width  - elementDimensions.width  ) / 2;
  var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

  setX = ( setX < 0 ) ? 0 : setX;
  setY = ( setY < 0 ) ? 0 : setY;

  element.style.left = setX + "px";
  element.style.top  = setY + "px";

  element.style.display  = 'block';
}
